﻿using System;
namespace Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="LahendOtsingKis", Namespace="http://producers.etoimik.xtee.riik.ee/producer/etoimik", Target=typeof(LahendOtsingKis))]
    public class LahendOtsingKisSerializer : global::Xtee.Core.Types.AbstractXteeSerializable {
        
        protected ILahendOtsingKis clazz;
        
        public LahendOtsingKisSerializer(ILahendOtsingKis clazz) {
            this.clazz = clazz;
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            if (clazz.KoostamiseAlgusKP!=null) {
                Writer.WriteStartElement("KoostamiseAlgusKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.KoostamiseAlgusKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.KoostamiseLoppKP!=null) {
                Writer.WriteStartElement("KoostamiseLoppKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.KoostamiseLoppKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MenetlusLiik!=null) {
                Writer.WriteStartElement("MenetlusLiik");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.MenetlusLiik))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MenetlusTyyp!=null) {
                Writer.WriteStartElement("MenetlusTyyp");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.MenetlusTyyp.Count);
                for (int x = 0; ((clazz.MenetlusTyyp != null) 
                            && (x < clazz.MenetlusTyyp.Count)); x = (x + 1)) {
                    if (clazz.MenetlusTyyp[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.MenetlusTyyp[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.SisulineLiigitusKaebusProtestLiikObjektID!=null) {
                Writer.WriteStartElement("SisulineLiigitusKaebusProtestLiikObjektID");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.SisulineLiigitusKaebusProtestLiikObjektID.Count);
                for (int x = 0; ((clazz.SisulineLiigitusKaebusProtestLiikObjektID != null) 
                            && (x < clazz.SisulineLiigitusKaebusProtestLiikObjektID.Count)); x = (x + 1)) {
                    if (clazz.SisulineLiigitusKaebusProtestLiikObjektID[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SisulineLiigitusKaebusProtestLiikObjektID[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.SisulineLiigitusLiikObjektID!=null) {
                Writer.WriteStartElement("SisulineLiigitusLiikObjektID");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.SisulineLiigitusLiikObjektID.Count);
                for (int x = 0; ((clazz.SisulineLiigitusLiikObjektID != null) 
                            && (x < clazz.SisulineLiigitusLiikObjektID.Count)); x = (x + 1)) {
                    if (clazz.SisulineLiigitusLiikObjektID[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SisulineLiigitusLiikObjektID[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.SisulineLiigitusTaiendavLiikObjektID!=null) {
                Writer.WriteStartElement("SisulineLiigitusTaiendavLiikObjektID");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.SisulineLiigitusTaiendavLiikObjektID.Count);
                for (int x = 0; ((clazz.SisulineLiigitusTaiendavLiikObjektID != null) 
                            && (x < clazz.SisulineLiigitusTaiendavLiikObjektID.Count)); x = (x + 1)) {
                    if (clazz.SisulineLiigitusTaiendavLiikObjektID[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SisulineLiigitusTaiendavLiikObjektID[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.SisulineLiigitusNoudeKLObjektID!=null) {
                Writer.WriteStartElement("SisulineLiigitusNoudeKLObjektID");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.SisulineLiigitusNoudeKLObjektID.Count);
                for (int x = 0; ((clazz.SisulineLiigitusNoudeKLObjektID != null) 
                            && (x < clazz.SisulineLiigitusNoudeKLObjektID.Count)); x = (x + 1)) {
                    if (clazz.SisulineLiigitusNoudeKLObjektID[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SisulineLiigitusNoudeKLObjektID[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.SisulineLiigitusKategooriaKLObjektID!=null) {
                Writer.WriteStartElement("SisulineLiigitusKategooriaKLObjektID");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.SisulineLiigitusKategooriaKLObjektID.Count);
                for (int x = 0; ((clazz.SisulineLiigitusKategooriaKLObjektID != null) 
                            && (x < clazz.SisulineLiigitusKategooriaKLObjektID.Count)); x = (x + 1)) {
                    if (clazz.SisulineLiigitusKategooriaKLObjektID[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SisulineLiigitusKategooriaKLObjektID[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.MenetlevAsutusKLObjektIDd!=null) {
                Writer.WriteStartElement("MenetlevAsutusKLObjektIDd");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("long", "http://www.w3.org/2001/XMLSchema", clazz.MenetlevAsutusKLObjektIDd.Count);
                for (int x = 0; ((clazz.MenetlevAsutusKLObjektIDd != null) 
                            && (x < clazz.MenetlevAsutusKLObjektIDd.Count)); x = (x + 1)) {
                    if (clazz.MenetlevAsutusKLObjektIDd[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.MenetlevAsutusKLObjektIDd[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.Vabatekst!=null) {
                Writer.WriteStartElement("Vabatekst");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.Vabatekst))).ToString());
                Writer.WriteEndElement();
            }
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
            if (Reader.LocalName=="KoostamiseAlgusKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.KoostamiseAlgusKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("KoostamiseAlgusKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="KoostamiseLoppKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.KoostamiseLoppKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("KoostamiseLoppKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MenetlusLiik") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MenetlusLiik = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("MenetlusLiik")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MenetlusTyyp") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MenetlusTyyp = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("MenetlusTyyp");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>MenetlusTyyp>item");
                            }
                            clazz.MenetlusTyyp.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SisulineLiigitusKaebusProtestLiikObjektID") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SisulineLiigitusKaebusProtestLiikObjektID = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("SisulineLiigitusKaebusProtestLiikObjektID");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>SisulineLiigitusKaebusProtestLiikObjektID>item");
                            }
                            clazz.SisulineLiigitusKaebusProtestLiikObjektID.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SisulineLiigitusLiikObjektID") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SisulineLiigitusLiikObjektID = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("SisulineLiigitusLiikObjektID");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>SisulineLiigitusLiikObjektID>item");
                            }
                            clazz.SisulineLiigitusLiikObjektID.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SisulineLiigitusTaiendavLiikObjektID") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SisulineLiigitusTaiendavLiikObjektID = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("SisulineLiigitusTaiendavLiikObjektID");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>SisulineLiigitusTaiendavLiikObjektID>item");
                            }
                            clazz.SisulineLiigitusTaiendavLiikObjektID.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SisulineLiigitusNoudeKLObjektID") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SisulineLiigitusNoudeKLObjektID = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("SisulineLiigitusNoudeKLObjektID");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>SisulineLiigitusNoudeKLObjektID>item");
                            }
                            clazz.SisulineLiigitusNoudeKLObjektID.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SisulineLiigitusKategooriaKLObjektID") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SisulineLiigitusKategooriaKLObjektID = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("SisulineLiigitusKategooriaKLObjektID");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>SisulineLiigitusKategooriaKLObjektID>item");
                            }
                            clazz.SisulineLiigitusKategooriaKLObjektID.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MenetlevAsutusKLObjektIDd") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MenetlevAsutusKLObjektIDd = new System.Collections.Generic.List<System.Int64?>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("MenetlevAsutusKLObjektIDd");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if (Reader.IsElementNil()) {
                                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>>LahendOtsingKis>MenetlevAsutusKLObjektIDd>item");
                            }
                            clazz.MenetlevAsutusKLObjektIDd.Add(new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("item")).Value);
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="Vabatekst") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.Vabatekst = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("Vabatekst")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
        }
    }
}
